
#ifndef COLLECTION_H
#define COLLECTION_H

class Collection {
  public:
   Collection(); // Default constructor
   virtual ~Collection()=0; // Destructor
   Collection(Collection* other); //copy constructor
   
   // Inserts the specified element at the specified position in the collection
   virtual void add(int index, int element) = 0;
   
   // Appends the specified element to the end of this collection
   virtual void add(int value) = 0;
   
   // Appends all of the elements in the specified collection to the end of
   // this collection
   virtual void addAll(Collection* c) = 0;
   
   // Inserts all of the elements in the specified collection into this
   // collection at the specified position
   virtual void addAll(int index, Collection* c) = 0;
   
   // Removes all of the elements from this collection.
   virtual void clear() = 0;
   
   // Returns true if this collection contains the specified element.
   virtual bool contains(int element) = 0;
   
   virtual int search(int element) = 0;
   
   // Returns the element at the specified position in this collection.
   virtual int get(int index) = 0;
   
   // Returns true if this list contains no elements.
   virtual bool isEmpty() const = 0;
   
   // Removes the element at the specified position in this collection
   virtual void remove(int index) = 0;
   
   // Removes from this collection all the elements that are contained in the
   // specified collection
   virtual void removeAll(Collection* c) = 0;
   
   // Returns the number of elements in this collection.
   virtual int size() const = 0;
   
   // Returns an array containing all of the elements in this list in proper
   // sequence
   virtual int* toArray() = 0;
};
#endif
